package com.lft.juc10.functionalinterface;

import java.util.function.Function;

/**
 * Function 函数式接口：泛型有一个输入参数类型，一个输出参数类型。
 * 只要是 函数式接口，就可以使用 lambda 表达式简化。
 */
public class TestFunction {
	public static void main(String[] args) {
		// // 工具类：将输入的字符串，转换成数值输出。
		// lambda进化-1. 匿名内部类
		// Function<String, Integer> function = new Function<String, Integer>() {
		// 	@Override
		// 	public Integer apply(String o) {
		// 		return Integer.parseInt(o);
		// 	}
		// };
		// lambda进化-2. lambda 表达式
		// Function<String, Integer> function = (String o) -> {return Integer.parseInt(o)};
		// lambda进化-3. lambda 表达式-简化（单个参数，省略参数类型，去掉参数的小括号）
		// Function<String, Integer> function = o -> {return Integer.parseInt(o)};
		// lambda进化-4. lambda 表达式-简化（声明式 简化为 表达式）
		// Function<String, Integer> function = o -> Integer.parseInt(o);
		// lambda进化-5. lambda 表达式-简化（方法引用）
		Function<String, Integer> function = Integer :: parseInt;
		System.out.println(function.apply("139"));
	}
}
